Readers which support Fujitsus custom commands for both 64K and 8K tags report the same in the field IsFujitsuCommandSupported of ReaderCaps as true.
This section describes the operations which can be performed on 64K Fujitsu tags.
This method changes the word-lock flags of up to two consecutive words in the User Memory Bank of 64K Fujitsu tags. One can selectively apply lock or unlock or not apply any action on each of the two words. Thus, only the 2 LSBs of PayloadAction and PayloadMask are considered. A set action bit indicates write-lock operation, a reset bit for write-unlock operation for the corresponding Area. Only if the corresponding mask bit is set, the action specified will be applied. This operation requires the Block Group password of the containing Block Group.
string
tagId = "112233441122334411223344";
//
Change Word Lock
Fujitsu.ChangeWordLockAccessParams
changeWordLockParams = new Fujitsu.ChangeWordLockAccessParams();
changeWordLockParams.BlockGroupPassword
= 0x12345678;
changeWordLockParams.ByteOffset
= 4;
changeWordLockParams.MemoryBank
= MEMORY_BANK.MEMORY_BANK_USER;
changeWordLockParams.PayloadAction
= 0x03;
changeWordLockParams.PayloadMask
= 0x03;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.ChangeWordLockWait(tagId,
changeWordLockParams, null);
This method changes the BlockLock flags of upto 16 consecutive blocks inside a block group. Setting the BlockLock flags will make the containing words to be locked after a single Write operation, while resetting it will restore normal functionality. This operation requires Block Group Password.
string
tagId = "112233441122334411223344";
//
Change Block Lock
Fujitsu.ChangeBlockLockAccessParams
changeBlockLockParams = new Fujitsu.ChangeBlockLockAccessParams();
changeBlockLockParams.BlockGroupOffset
= 6;
changeBlockLockParams.BlockGroupPassword
= 0x12345678;
changeBlockLockParams.PayloadAction
= 0x1234;
changeBlockLockParams.PayloadMask
= 0xf0f0;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.ChangeBlockLockWait(tagId,
changeBlockLockParams, null);
This method reads the status of the Block-lock flags of all the blocks inside a specified BlockGroup. Incase of a single Tag operation, the result is returned in TagDatas member Object AccessOperationResult.FujitsuReadBlockLock. In case of multiple tag operations the ReadNotify handler will be receiving the TagData objects for each tag that participated in access.
string
tagId = "112233441122334411223344";
//
Read Block Lock
Fujitsu.ReadBlockLockAccessParams
readBlockLockParams = new Fujitsu.ReadBlockLockAccessParams();
readBlockLockParams.BlockGroupOffset
= 6;
//
single tag operation
TagData
retTagData =
rfid3.Actions.TagAccess.Fujitsu.ReadBlockLockWait(tagId,
readBlockLockParams, null);
if
(retTagData.OpCode == ACCESS_OPERATION_CODE.ACCESS_OPERATION_FUJITSU_READ_BLOCKLOCK
&& retTagData.OpStatus == ACCESS_OPERATION_STATUS.ACCESS_SUCCESS)
{
Console.WriteLine(retTagData.AccessOperationResult.FujitsuReadBlockLockResult.BlockLockStatus);
}
This operation changes the specified Block or Area Group password depending on the target tag involved in the operation i.e, a 64K tag responds with a change in its Block Group password while a 8K tag responds with a change in its Area Group password, provided a valid Current password is provided. Thus, if an access Filter criteria is passed, both 64K and 8K tags participate in this operation.
string
tagId = "112233441122334411223344";
//
Change block or area group password
Fujitsu.ChangeBlockOrAreaGroupPasswordAccessParams
changeBlockOrAreaGroupPasswordParams = new Fujitsu.ChangeBlockOrAreaGroupPasswordAccessParams();
changeBlockOrAreaGroupPasswordParams.BlockOrAreaGroupOffset
= 0x08;
changeBlockOrAreaGroupPasswordParams.CurrentPassword
= 0x12345678;
changeBlockOrAreaGroupPasswordParams.NewPassword
= 0;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.ChangeBlockOrAreaGroupPasswordWait(tagId,
changeBlockOrAreaGroupPasswordParams, null);
This operation writes an even number of words into a Fujitsu tags memory with a single command over the air. Unlike BlockWrite, it can only write at locations with even-worded offset in the memory banks. In addition, the number of words successfully not written is also obtained from the tag itself.
string
tagId = "112233441122334411223344";
//
Burst Write
Fujitsu.BurstWriteAccessParams
burstWriteParams = new Fujitsu.BurstWriteAccessParams();
byte[]
burstWriteData = new byte[12] {0x91, 0x97, 0x42, 0x74,
0x23, 0x12, 0x91,
0x97, 0x42, 0x74, 0x23, 0x12 };
burstWriteParams.AccessPassword
= 0x12345678;
burstWriteParams.BurstWriteData
= burstWriteData;
burstWriteParams.BurstWriteDataLength
= 12;
burstWriteParams.ByteOffset
= 16;
burstWriteParams.MemoryBank
= MEMORY_BANK.MEMORY_BANK_USER;
//
single tag operation
TagData
retTagData =
rfid3.Actions.TagAccess.Fujitsu.BurstWriteWait(tagId,
burstWriteParams, null);
Console.WriteLine(retTagData.AccessOperationResult.FujitsuBurstWriteResult.NumberOfBytesNotWritten);
This operation erases an even number of words in a Fujitsu tags memory with a single custom command over the air. Unlike Block Erase, it can only erase words starting at locations with even-worded offset in the memory. Besides, the tag itself provides information on the number of words not successfully erased.
string
tagId = "112233441122334411223344";
//
Burst Erase
Fujitsu.BurstEraseAccessParams
burstEraseParams = new Fujitsu.BurstEraseAccessParams();
burstEraseParams.AccessPassword
= 0x12345678;
burstEraseParams.BurstEraseLength
= 16;
burstEraseParams.ByteOffset
= 4;
burstEraseParams.MemoryBank
= MEMORY_BANK.MEMORY_BANK_USER;
//
single tag operation
TagData
retTagData =
rfid3.Actions.TagAccess.Fujitsu.BurstEraseWait(tagId,
burstEraseParams, null);
if
(retTagData.OpCode == ACCESS_OPERATION_CODE.ACCESS_OPERATION_FUJITSU_BURST_ERASE
&& retTagData.OpStatus == ACCESS_OPERATION_STATUS.ACCESS_SUCCESS)
{
Console.WriteLine(retTagData.AccessOperationResult.FujitsuBurstEraseResult.NumberOfBytesNotErased);
}
This section describes the operations which can be performed on 8K Fujitsu tags.
This operation can apply read-lock on up to 16 consecutive areas of a specified AreaGroup inside a 8K Fujitsu tags. On succeeding, the enclosing words are prevented from reading. A set action bit indicates read-lock operation, a reset bit for read-unlock operation for the corresponding Area. Only if the corresponding mask bit is set, the action specified will be applied. This operation requires the AreaGroups password.
string
tagId = "112233441122334411223344";
//
Area Read Lock
Fujitsu.AreaReadLockAccessParams
areaReadLockParams = new Fujitsu.AreaReadLockAccessParams();
areaReadLockParams.AreaGroupOffset
= 0x08;
areaReadLockParams.AreaGroupPassword
= 0x12345678;
areaReadLockParams.PayloadAction
= 0x1234;
areaReadLockParams.PayloadMask
= 0xf0f0;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.AreaReadLockWait(tagId,
areaReadLockParams, null);
This operation can apply Write-lock on up to 16 consecutive areas of a specified AreaGroup inside a 8K Fujitsu tags. On succeeding, the enclosing words are prevented from writing. This operation requires the AreaGroups password.
string
tagId = "112233441122334411223344";
//
Area Write Lock
Fujitsu.AreaWriteLockAccessParams
areaWriteLockParams = new Fujitsu.AreaWriteLockAccessParams();
areaWriteLockParams.AreaGroupOffset
= 0x08;
areaWriteLockParams.AreaGroupPassword
= 0x12345678;
areaWriteLockParams.PayloadAction
= 0x1111;
areaWriteLockParams.PayloadMask
= 0xffff;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.AreaWriteLockWait(tagId,
areaWriteLockParams, null);
This operation can only apply Write-lock on up to 16 consecutive areas of a specified Area Group. This operation does not require the Area Groups password. However, one cannot unlock the Write-lock flags of the areas.
string
tagId = "112233441122334411223344";
//
Area Write Lock without password
Fujitsu.AreaWriteLockWOPasswordAccessParams
areaWriteLockWOPasswordParams = new Fujitsu.AreaWriteLockWOPasswordAccessParams();
areaWriteLockWOPasswordParams.AreaGroupOffset
= 0x3;
areaWriteLockWOPasswordParams.PayloadAction
= 0xff0f;
//
single tag operation
rfid3.Actions.TagAccess.Fujitsu.AreaWriteLockWOPasswordWait(tagId, areaWriteLockWOPasswordParams, null);